package main

import "fmt"

type Observer struct {
}

func (o *Observer) Update(msg string) {
	fmt.Println(msg)
}

type Subject struct {
	observers []Observer
}

func (s *Subject) AddObserver(observer Observer) {
	s.observers = append(s.observers, observer)
}

func (s *Subject) Notice(msg string) {
	for _, observer := range s.observers {
		observer.Update(msg)
	}
}
